Rally plan - VTOL FW approach loiter points#712
Conversation
|
Sorry, my first thought here is, "no, that's what "MAV_CMD_DO_RETURN_PATH_START is for". |
@peterbarker No need to be sorry, this stuff should be discussed before being invented (however this ends up). As it turns out MAV_CMD_DO_RETURN_PATH_START doesn't have the right semantics
Either way the fundamental discussion I want to have here is not so much "is the right way" as "is this non-compliant or just a use of the standard that we haven't thought of", as that defines how we manage this kind of thing going forward. I think this is use of the standard we haven't thought of. |
Not sure what you mean by "need the radius" here. You can put whatever mission commands you like after Reading the topic of that PX4 pull request - that's pretty much exactly what DO_RETURN_PATH_START is for!
AFAICS this is definitely in the, "that's absolutely the wrong way to do and would require rewriting a whole bunch of GCS code to allow for planning this out", whereas adding extra mission items - DO_RETURN_PATH_START, for example isn't a problem. IMO rally points are not "mini missions" and shouldn't be used as such. Merging PRs that stretch what you can do with rally points like this and then saying the standard has to be modified to accommodate them is... let's say "rude". Unless I'm missing something with that feature, I very much doubt ArduPilot would ever implement it as it would seem to be entirely redundant. Something like QGC will need an option bit to see if the vehicle has the sort of behaviour it is after. This is not a "standard". Please check to see if |
|
@peterbarker Sorry, I think I must be putting the use case poorly.
The intent is not to make a mini-mission. The idea is that you can define an approach to the rally point by specifying a point near it that the vehicle will go to first, so that we know there is a safe vector to that point. That's a solid use case. I don't see how you can do that in a rally point definition "flexibly" without a way to specify a waypoint associated with the rally point. |
|
On Sat, 6 Jun 2026, Hamish Willee wrote:
DO_RETURN_PATH_START is used to identify a safe path to join a mission path, so that you can safetly follow it to a mission-based landing pattern used as a destination for a return
action. It's very clever, but it assumes that we want to do a mission return path, or even that we have a mission. We don't in this case.
It doesn't *have* to be a landing pattern at the end. It frequently is.
But there's no reason you can't do an indefinite fixed-wing loiter at the
other end.
I'm suggesting here that DO_RETURN_PATH_START is essentially a superset of
the functionality.
The intent is not to make a mini-mission.
That's exactly what you're describing. "Go here, then there". After all,
at the moment you're saying a known point to give you a safe vector to the
rally point - but what if you need a save vector towards that first point?
That's a solid use case. I don't see how you can do that in a rally point definition "flexibly" without a way to specify a waypoint associated with the rally point.
You can't - rally points aren't designed for this.
Incidentally, the use case you're describing has been solved by one of our
partners with a Lua script which chooses between two "jump tag"s (which we
have mission items and mavlink commands in the standard for. It flies
around a bit to work out what the speed is (does a quick survey of the
runway to make sure it knows where everything is, then chooses a jump tag
and uses that for its approach.
|
|
TL;DR. What is clear right now is that you have strong objections to this being standard, and therefore it can't be considered standard. I'll add this as as a non-standard implementation thingy and we should discuss if there are better ways that aren't such colossal hacks. You're right that using rally points in this way is a hack. We use them because its the hammer we have, not because using mission landings as the return path are the best solution. I'd prefer we did that as it would be designed. |
817ceb7 to
32585e6
Compare
32585e6 to
cf3fea4
Compare
|
Hey @peterbarker, @hamishwillee There is a slight misunderstanding. VTOL land approaches were merged here PX4/PX4-Autopilot#21049 3 years ago, it's not a new behavior being pushed to the standard. This PR: PX4/PX4-Autopilot#27004 just fixed how the approaches were computed and documented the behavior (because I did not know that those existed).
@peterbarker the way I understand the docs (correct me if I'm wrong), the drone will not necessarily fly to the DO_RETURN_PATH_START location and perform that command. E.g. in the image below from https://ardupilot.org/plane/docs/common-do-return-path-start.html if the drone is between waypoints 4 and 7, it will not fly back to the DO_RETURN_PATH_START as it would crash into the trees which defies the purpose of that DO_RETURN_PATH_START. If so, DO_RETURN_PATH_START cannot solve what the VTOL approaches solve which is having different locations not necessarily on the route to perform a specifc VTOL descent based on wind before landing.
|
Cool cool. Documentation is good.
Right, the vehicle only treats the
I guess This is the bit being violated, BTW: |
|
This got discussed in 20260617-Dev-Meeting. @JonasPerolini Understand this is not your "fault", but whether it is three years or 30 things aren't standard unless they are an agreed part of the standard. Right now this is a hack. @peterbarker That said, we all feel using rally points for landing behaviours makes sense. There is no reason these could not be other kinds of landing patterns too - such as fixed-wing landing patterns. To progress this we would need some consideration of how this might be extended in future so that we can ensure whatever approach is used is agreed and documented. |
|
On Wed, 17 Jun 2026, Hamish Willee wrote:
@JonasPerolini Understand this is not your "fault", but whether it is three years or 30 things aren't standard unless they are an agreed
part of the standard. Right now this is a hack.
@peterbarker That said, we all feel using rally points for landing behaviours makes sense. There is no reason these could not be other
kinds of landing patterns too - such as fixed-wing landing patterns. To progress this we would need some consideration of how this might
be extended in future so that we can ensure whatever approach is used is agreed and documented.
I'm very, very dubious. From a GCS perspective they now have to know that
rally points might specify the start of arbitrary landing sequences and
whatnot - which is already accomplished with DO_LAND_START.
IMO rally points *should* be kept simple. Keep the mission planning
for.... missions.
|
Precisely my point. Anything that doesn't depend on a mission doesn't automatically belong in the mission plan - any more than geofencesor rally points do. This is behaviour that doesn't and shouldn't rely on a mission. I can see that it is very tempting to use "the hammer you have" for handling sequences, but that doesn't mean it is the right thing to do. By way of evidence, this was already implemented, and the world did not end. |
|
On Thu, 18 Jun 2026, Hamish Willee wrote:
Keep the mission planning for.... missions.
Precisely my point. Anything that doesn't depend on a mission doesn't automatically belong in the mission plan - any more than geofencesor
rally points do. This is behaviour that doesn't and shouldn't rely on a mission.
I can see that it is very tempting to use "the hammer you have" for handling sequences, but that doesn't mean it is the right thing to do.
By way of evidence, this was already implemented, and the world did not end.
"implemented".... how many things actually support this? Has the impact
really been felt?
AFAICS qgroundcontrol does *not* support anything but rally point items in
the rally point mission_type. It does at least have a reasonable
understanding of DO_LAND_START!
So PX4-AutoPilot understands DO_LAND_START. QGC does. MissionPlanner
does. MAVProxy does. ArduPilot does. AFAICS it's a superset of the
functionality of what's been proposed. I suggest "sunset the code" is a
more appropriate response than the "fix the documentation" approach
currently being taken :-)
I mean, fixing documentation is awesome, but sometimes not entirely the
correct approach.
|
|
This isn't a documentation issue - the approach of using missions for this kind of thing is wrong. We'll have to agree to disagree until you're convinced. |
|
On Thu, 18 Jun 2026, Hamish Willee wrote:
This isn't a documentation issue - the approach of using missions for this kind of thing is wrong.
That is quite the assertion. The extremely useful extension of
DO_LAND_START, DO_RETURN_PATH_START, absoluutely could not be done by
extending the RALLY point approach. Planning entry points into mission
segments is entirely within the remit of the mission protocol.
DO_LAND_START is simply a superset of what you're proposing - AFAICS,
anyway. And things out there already support it.
Also... we're considering further enhancements to facilitate improved use
of DO_RETURN_PATH_START. Particularly for bvlos operations in confined
corridors, contining on a mission but making use of cross-over points to a
safe return path (or diversion to an alternate) will be extemely useful
and, again, an extension to DO_RETURN_PATH_START which is an extension of
DO_LAND_START, and absolutely integral to the mission planning process.
|

PX4 added support for more than just rally points in the rally plan in PX4/PX4-Autopilot#27004
In this case it is to associate a rally point with a loiter_alt command, so that you can control the descent behaviour when a VTOL is returning in fixed-wing mode.
There is nothing in the spec that says you can't have more than just rally points, but this is the first time it has been done, so I'm trying to work out the "right way" to record this. It could just be "you can do what you like", or it might be that we expect only rally points to be defined and we need to say "PX4 did this odd thing".
What I think is that we should allow anything, but require/request that implementations stated what they do here.
@peterbarker @auturgy @julianoes This is going into the dev call, but would appreciate any comments you might have.